/** TODO
	//prior1
	Clicar em tel salvo na lista alimenta o formulário 			Done
	Tela de confirmação de recarga 								Done
	botão de logout no header									Done
	exibir tempo remanescente de sessão no header				Done
	botão token = alert timestamp 4 ultimos n.					Done
	botão mapa = chamar tela em branco, alert com localização	Done

	//prior 2
	Filtro por período 29/01 - 01/02							Done
	não exibir datas repetidas									Done
*/

//Desabilita o cache do jquer mobile...
jQuery('div').on('pagehide', function(event, ui){
  var page = jQuery(event.target);

  if(page.attr('data-cache') == 'never'){
    page.remove();
  };
});

//Funções
//realiza login
function login(data, callback){
	stg.set({key: "agencia", value: data.agencia});
	stg.set({key: "conta", value: data.conta});
	if(typeof callback === 'function'){
		callback();
	}
};

//verifica se usuário está logado
function isLogged(){
	return true;
};

//encerra sessão
function logout(){

}

//timer de sessão
function setTimer(){
	if(typeof sTime !== "undefined"){
		window.clearInterval(sTime);
	}
	var tempo = new Date();
	tempo.setMinutes(5);
	tempo.setSeconds(0);
	sTime = self.setInterval(function(){
		tempo.setSeconds(tempo.getSeconds() - 1);
		$('#sessionTime span').text(tempo.getMinutes() + ':' + ((tempo.getSeconds() < 10) ? '0' + tempo.getSeconds() : tempo.getSeconds()))
	}, 1000);
};

//Classe do Storage
function Stg(){
	//param data = obj{key:"string", value:"string"}
	this.set = function(data){
		window.localStorage.setItem(data.key, data.value);
	};
	
	//param data = obj{key:"string", value:"string"}
	this.get = function(key){
		return window.localStorage.getItem(key);
	};
};
var stg = new Stg();

//gera e exibe token
function generateToken(){
	var token = Number(new Date());
	token = token.toString();
	token = token.substring(token.length - 4, token.length);
	alert(token);
}

//Função de confirmação de recarga
function confirmaRecarga(){
	if($('#inputToken').val().length >= 4){
		alert('recarga efetuada');
		$.mobile.changePage('menu.html');
	}
}


//Função que preenche o formulário de recarga à partir dos telefones salvos

//binds genéricos
function doBinds(){
	//header
	$('#logout').unbind().bind('click', function(){
		logout();
	});

	//footer
	$('#footer').unbind().bind('click', function(){
		if(!isLogged()){
			alert('Você precisa estar logado para acessar este conteúdo');
		}else{
			return false;
		}
	});

	$('#subscribe').click(function(){
		/*************************************
				Subscribe aqui
		*************************************/


	});

	//tela de login
	$('#entrar').click(function(e){
		e.preventDefault();
		var user = {
			agencia: $('#agencia').val(),
			conta: $('#conta').val(),
			senha: $('#pass')
		};
		login(user, function(){
			$.mobile.changePage('menu.html');
		});
	});
};

//funções específicas das páginas
$(document).on( "pageinit", function( event ){


setTimer()
	var pl = event.target.id;
	doBinds();
	//Tela de login
	if(pl === 'splashPage'){
		setTimeout(function(){$.mobile.changePage("login.html")}, 2000);
	}
	//Tela de login
	if(pl === 'loginPage'){
		if(stg.get('agencia') && stg.get('conta')){
			$('#agencia').val(stg.get('agencia'));
			$('#conta').val(stg.get('conta'));
		}
	}


	//Tela de saldo
	if(pl === "saldo"){
		$(function(){
		    // create a datepicker with default settings
		    $("#dataIni, #dataFim").mobiscroll().date({dateFormat:"dd-mm-yy", theme: "ios", dateOrder: "ddmmyy"});
		    var today = new Date()
		    $("#dataFim").mobiscroll('setDate', today, true);
		    today.setDate(today.getDate() - 5)
		    $("#dataIni").mobiscroll('setDate', today, true);

		    //Botões de periodo/mes
		    $("#pMes, #extratoResult").hide();
		    $('#radio-choice-h-2a').click(function(){
		    	$("#pMes").hide();
		    	$("#pPeriodo").show();
		    });
		    $('#radio-choice-h-2b').click(function(){
		    	$("#pMes").show();
		    	$("#pPeriodo").hide();
		    });

		    //Exibe Saldos
		    $.ajax({
		    	url: 'json/listarExtratoResponse.json',
		    	async: false,
		    	success: function(data){
		    		var data = JSON.parse(data);
		    		$('#contaFacil').text(data.saldoDisp);
		    		$('#contaFacilTotal').text(data.saldoDisp);
		    		$('#saldoTotal').text(data.saldoDisp);
		    		$('#saldoInvestimento').text(data.saldoInvest);
		    		$('#creditoOnline').text(data.limiteCred);
		    		$('#limiteUtilizado').text(data.credUtilizado);
		    		$('#limiteDisponivel').text(data.limiteDisp);
		    	}
		    });


		    //Exibe extrato
		    $('#consultar').click(function(e){
		    	//utilizada em busca só por mes
		    	function checkMonth(date){
		    		var data = date.split('/');
		    		if($('#select-native-fc:visible').length > 0 && $('#select-native-fc:visible').val() != "0"){
		    			if(data[1] == $('#select-native-fc:visible').val()){
		    				return true;
		    			} else {
		    				return false;
		    			}
	    			} else {
	    				return false;
	    			}
		    	}
		    	function buildMarkup(data){
		    		var markup = "";
		    		function doLoop(cmonth){
		    			var prevData = '';
			    		for(t in data.movimentacao){
		    				var self = data.movimentacao[t];
		    				if((cmonth === true && checkMonth(self.dataMov))){
				    			markup += '<tr>';
				    			markup += '<td>' + ((self.dataMov !== prevData) ? self.dataMov : '') + '</td>';
				    			markup += '<td>' + self.descHist + '</td>';
				    			markup += '<td>';
				    			if(self.tipoLancamento == "C"){
				    				markup += '<span style="color:green">' + self.valor + '</span></td>';
			    				} else if(self.tipoLancamento == "D"){
				    				markup += '<span style="color:red">' + self.valor + '</span></td>';
				    			} else {
				    				markup += self.valor + '</td>';
				    			}
				    			markup += '</tr>';
			    			} else if(cmonth === false){
			    				var tempDate = self.dataMov.split('/');
			    				dtO.setDate(tempDate[0]);
			    				dtO.setMonth(parseInt(tempDate[1]) - 1);
			    				console.log(dtI)
			    				console.log(dtO)
			    				console.log(dtF)
			    				console.log(dtI <= dtO, dtO <= dtF)
			    				console.log(dtI <= dtO && dtO <= dtF)
			    				if(dtI <= dtO && dtO <= dtF){
					    			markup += '<tr>';
					    			markup += '<td>' + ((self.dataMov !== prevData) ? self.dataMov : '') + '</td>';
					    			markup += '<td>' + self.descHist + '</td>';
					    			markup += '<td>';
					    			if(self.tipoLancamento == "C"){
					    				markup += '<span style="color:green">' + self.valor + '</span></td>';
				    				} else if(self.tipoLancamento == "D"){
					    				markup += '<span style="color:red">' + self.valor + '</span></td>';
					    			} else {
					    				markup += self.valor + '</td>';
					    			}
					    			markup += '</tr>';
				    			}
			    			}
			    			prevData = self.dataMov;
			    		};		    			
		    		}
		    		//se selecione um mês estiver visível...
		    		if($('#select-native-fc:visible').length > 0){
		    			//se seleçao de mes tiver um valor marcado
		    			if($('#select-native-fc:visible').val() != "0"){
		    				doLoop(true);
		    			//se estiver no option default
		    			}else{
	    					alert('Selecione um mês');
		    			}
	    			//se não estiver visível
		    		} else{
		    			var dtI = $("#dataIni").mobiscroll('getDate'),
		    				dtF = $("#dataFim").mobiscroll('getDate'),
		    				dtF = dtF.setDate(dtF.getDate() + 1),
		    				dtO = new Date();
		    			doLoop(false);
		    		}
		    		return markup;
		    	}

		    	e.preventDefault();
		    	$.ajax({
		    		url: 'json/listarExtratoResponse.json',
		    		async: false,
		    		success: function(data){
		    			$('#extratoResult tbody').empty();	
			    		var data = JSON.parse(data);			    		
			    		$('#extratoResult tbody').append(buildMarkup(data));
			    		$("#extratoResult").show();
		    		},
		    		error: function(data){
		    		}
		    	});
			});
		});
	}

	//Tela de recarga
	if(pl === "recarga"){
		//Carrega contatos da lista
		var telList = stg.get('telList');
		if(telList){
			telList = JSON.parse(telList);
			var list = telList.list,
				markup = "";
			for(i in list){
				var self = list[i];
				markup += '<li><a>' + self.nome + '<span class="telListItem">' + self.tel + '</span><span class="dddListItem">' + self.ddd + '</span></a></li>';
			}
			$('#listDisplay').append(markup).listview('refresh');

			//Remove Item da lista
			$('#listDisplay li a').on('swipeleft', function(){
				if(confirm('Remover da lista?')){
					var telList = JSON.parse(stg.get('telList'));
					for(i in telList.list){
						if(telList.list[i].tel === $(this).find('.telListItem').text()){
							telList.list.pop(i)							
						};
					}
					stg.set({"key":'telList', "value": JSON.stringify(telList)});
					$(this).parent('li').detach();
				}
			});

			//Popula formulário com dados da lista
			$('#listDisplay li a').on('click', function(){
				var telList = JSON.parse(stg.get('telList'))
				self = $(this);
				for(i in telList.list){
					if(telList.list[i].tel === self.find('.telListItem').text()){
						var tc = telList.list[i];
						$('#dddFirst, #dddConf').val(tc.ddd);
						$('#telFirst, #telConf').val(tc.tel);
						$('#nameAddList').val(tc.nome);
						$('#estadoAddList').val(tc.estado);
						$('#estadoAddList').selectmenu("refresh");
						populaOp(tc.estado, function(){
							$('#opAddList').val(tc.operadora);
							$('#opAddList').selectmenu("refresh");
						});

					};
				}
			});
		}
		//carrega estados
		$.ajax({
			url: 'json/listarEstadosResponse.json',
			async: false,
			success: function(data){
				var data = JSON.parse(data),
					estados = data.estado,
					markup = "";
				for(e in estados){
					var self = estados[e];
					markup += '<option value="' + self.sigla + '">' + self.sigla + '</option>';
				}
				$('#estadoAddList').append(markup);
			}
		});
		//binds do form

		function populaOp(est, callback){
			$.ajax({
				url: 'json/listarEstadosResponse.json',
				async: false,
				success: function(data){
					var data = JSON.parse(data),
						estados = data.estado,
						markup = "";
					var operadoras = $.grep(estados, function(element, index){return element["sigla"].indexOf(est) > -1});
					operadoras = operadoras[0].operadora;
					for(o in operadoras){
						var self = operadoras[o];
						markup += '<option value="' + self.codigo + '">' + self.nome + '</option>';
					}
					$("#opAddList").append(markup).selectmenu( "enable" );
					if(typeof callback === "function"){
						callback();
					}
				}
			});
		};

		//Select do estado, habilita operadora
		$('#estadoAddList').on('change',function(){
			$("#opAddList option[codigo!=0]").detach();
			var est = $(this).val();
			populaOp(est);
		});
		//se for adicionar à lista, torna nome obrigatorio
		$('#addToList').change(function(){
			if($(this).val() === "on"){
				$('#nameAddList').attr('required', 'required');
			} else {				
				$('#nameAddList').removeAttr('required');
			}
		});
		//botão prosseguir
		$('#nextRecarga').click(function(e){
			e.preventDefault();
			//var global para passar os dados da recarga
			compraRecarga = {
				"ddd": $('#dddFirst').val(),
				"tel": $('#telFirst').val(),
				"estado": $('#estadoAddList').val(),
				"operadora": $('#opAddList').val(),
				"recarga": $('#recargaValor').val()

			};
			var pass = true;
			$('#formRecarga input:required, #formRecarga select:required').each(function(){
				if($(this).val() === "") {
					pass = false;
				}
			});
			if(pass === true){
				if($('#addToList').val() === "on"){
					//Add novo tel à lista
					var telList = JSON.parse(stg.get('telList')),
						novoTel = {
							"ddd": $('#dddFirst').val(),
							"tel": $('#telFirst').val(),
							"nome": $('#nameAddList').val(),
							"operadora": $('#opAddList').val(),
							"estado": $('#estadoAddList').val()
						};
					if(!telList){
						telList = {"list":[]};
					}
					telList.list.push(novoTel)
					stg.set({"key":'telList', "value": JSON.stringify(telList)});
				}
				dadosRecarga = {
					"valor" : $('#recargaValor').val(),
					"agencia" : stg.get('agencia'),
					"conta" : stg.get('conta'),
					"ddd": $('#dddFirst').val(),
					"tel": $('#telFirst').val(),
					"nome": $('#nameAddList').val(),
					"operadora": $('#opAddList').val(),
					"estado": $('#estadoAddList').val()
				}
				$.mobile.changePage('confirmaRecarga.html');
			}
		});

	}

	if(pl === "confRecargaPage"){
		$("#confRecAg").text(dadosRecarga.agencia);
		$("#confRecCt").text(dadosRecarga.conta);
		$("#confRecEst").text(dadosRecarga.estado);
		$("#confRecOp").text(dadosRecarga.operadora);
		$("#confRecDdd").text(dadosRecarga.ddd);
		$("#confRecTel").text(dadosRecarga.tel);
		$("#confRecValor").text(dadosRecarga.valor + ',00');
		dadosRecarga = null;
	}

	if(pl === "mapPage"){

		if(navigator.geolocation){
			navigator.geolocation.getCurrentPosition(function(position){
				var coords = position.coords;
				$('#coords').text('latitude: ' + coords.latitude + ' | longitude: ' + coords.longitude);
			});
			
		} else {
			alert('Suporte à geolocalização inexistente ou recusado');
		}

	}

}).on( "pageshow", function( event ){
	var ps = event.target.id;
	
});